package model;

import junit.framework.TestCase;
import static org.mockito.Mockito.*;

public class MailTestCase extends TestCase {
	private Mail mail = new Mail("texto");

	protected void setUp() {

	}

	public void testConstructor1() {

		Mail mailcito = new Mail("algo");
		assertTrue(mailcito.getCuerpo() == "algo");
	}

	public void testLeerConstructor1() {

		assertEquals(this.mail.leer(), this.mail.getCuerpo());

	}

	public void testConstructor2() {

		Trabajo tpMock = mock(Trabajo.class);
		Usuario userMock = mock(Usuario.class);
		when(tpMock.getTitulo()).thenReturn("hola");
		when(tpMock.getResumen()).thenReturn("chau");
		when(tpMock.getAutor()).thenReturn(userMock);
		when(userMock.getNombre()).thenReturn("Pablo");
		when(userMock.getApellido()).thenReturn("Marmol");

		Mail mail = new Mail(tpMock);

		verify(tpMock).getTitulo();
		verify(tpMock).getResumen();
		verify(tpMock).getAutor();
		verify(userMock).getNombre();
		verify(userMock).getApellido(); 
	
		assertEquals("TITULO DEL TRABAJO: hola RESUMEN: chau AUTOR: Pablo Marmol", mail.leer());
	}
	
	public void testConstructor3() {

		Trabajo tpMock = mock(Trabajo.class);
		Usuario userMock =mock(Usuario.class);
		when(tpMock.getTitulo()).thenReturn("hola");
		when(tpMock.getResumen()).thenReturn("chau");
		when(tpMock.getAutor()).thenReturn(userMock);
		when(userMock.getNombre()).thenReturn("Pablo");
		when(userMock.getApellido()).thenReturn("Marmol");

		EstadoDeCorreccion nota = new Aceptado();	
		
		Mail mail = new Mail(tpMock, nota);

		verify(tpMock).getTitulo();
		verify(tpMock).getResumen();
		verify(tpMock).getAutor();
		verify(userMock).getNombre();
		verify(userMock).getApellido();
		
		assertEquals("TITULO DEL TRABAJO: hola RESUMEN: chau AUTOR: Pablo Marmol NOTA FINAL: ACEPTADO - COMENTARIOS: null", mail.leer());
	}
}